/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package vo;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name="cidade")
@SuppressWarnings ("serial")
public class CidadeVO implements Serializable {

    @Id
    @SequenceGenerator( name = "cod_cidade", sequenceName = "cod_cidade_seq", allocationSize = 1 )
    @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "cod_cidade" )
    @Column (name = "cod_cidade", nullable = false)
    private int codCidade;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="cod_estado", insertable=true, updatable=true)
    @Fetch(FetchMode.JOIN)
    @Cascade(CascadeType.SAVE_UPDATE)
    private EstadoVO estado;
    @Column (name = "nom_cidade")
    private String nome;
    @OneToMany(mappedBy="cidade", fetch = FetchType.LAZY)
    @Cascade(CascadeType.SAVE_UPDATE)
    private Collection <EnderecoVO> endereco;
    @Column (name = "ativo")
    private boolean ativo;

    //Construtor Vazio
    public CidadeVO (){ }
    //Construtor com Parâmentros
    public CidadeVO (int codCidade, EstadoVO estado, String nome)
    {
        this.codCidade = codCidade;
        this.estado = estado;
        this.nome = nome;
        this.ativo = true;
    }

    //Metodos Get() e Set()
    public int getCodCidade() {
        return codCidade;
    }
    public void setCodCidade(int codCidade) {
        this.codCidade = codCidade;
    }

    public EstadoVO getEstado() {
        return estado;
    }
    public void setEstado(EstadoVO estado) {
        this.estado = estado;
    }


    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }

    public Collection getEndereco(){
        return endereco;
    }
    public void setEndereco (Collection endereco){
        this.endereco = endereco;
    }

    public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }

}
